package org.jeecg.modules.wangyue.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.wangyue.entity.UserRoleInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.wangyue.model.res.ResUserRoleInfoModel;

import java.util.List;

/**
 * @Description: 角色信息表
 * @Author: jeecg-boot
 * @Date:   2023-06-30
 * @Version: V1.0
 */
public interface IUserRoleInfoService extends IService<UserRoleInfo> {

    /**
     * 获得技师用户信息
     *
     * @param page              分页配置
     * @param keywords          关键字(模糊搜索)
     * @param userId            用户id
     * @param cityCode          城市code
     * @param log               用户所在经度
     * @param lat               用户所在纬度
     * @param distance          距离范围
     * @param serviceNum        服务状态号(1-在线中，2-忙碌中，3-休息中)
     * @param sex               性别(1-男,2-女)
     * @param yearMax           查询年份最大值
     * @param yearMin           查询年份最小值
     * @param serviceTypeCode   服务类型code
     * @param serviceItemsCode  服务项目code
     * @param sortType          排序类型(1-智能排序，2-距离优先，3-评价最高，4-接单量优先)
     * @return
     */
    IPage<ResUserRoleInfoModel> getJsUserRoleInfo(Page page, String keywords, String userId, String cityCode, String log, String lat, String distance,
                                                  String serviceNum, String sex, String yearMax, String yearMin, String serviceTypeCode, String serviceItemsCode,
                                                  String sortType);


    /**
     * 计算用户与技师的距离
     * @param log           用户所在的经度
     * @param lat           用户所在的纬度
     * @param jsUserId      技师用户id
     * @param jsUserType    技师用户类型
     * @return
     */
    String computeDistanceFromJs(String log, String lat, String jsUserId, String jsUserType);


    /**
     * 管理端，查询用户分页
     * @param page      分页配置
     * @param userType  角色类型
     * @param keywords  关键字
     * @return
     */
    IPage<UserRoleInfo> getUserRoleInfoByPage(Page page, String userType, String keywords);

    /**
     * 管理端，查询技师分页
     * @param page      分页配置
     * @param userType  角色类型
     * @param keywords  关键字
     * @param isRoleAuth  是否角色认证(0-否,1-是)
     * @return
     */
    IPage<UserRoleInfo> getJsRoleInfoByPage(Page page, String userType, String keywords, String isRoleAuth);

    /**
     * 管理端，查询用户List
     * @param userType  角色类型
     * @param idList    id集合
     * @param keywords  关键字
     * @return
     */
    List<UserRoleInfo> getUserRoleInfoByList(String userType, List<String> idList, String keywords);

    /**
     * 管理端，查询技师List
     * @param userType  角色类型
     * @param idList    id集合
     * @param keywords  关键字
     * @param isRoleAuth  是否角色认证(0-否,1-是)
     * @return
     */
    List<UserRoleInfo> getJsRoleInfoByList(String userType, List<String> idList, String keywords, String isRoleAuth);


}
